package com.zc.remoteControl.service;

import com.zc.manager.device.entity.DeviceProperty;
import reactor.core.Disposable;

import java.text.ParseException;
import java.util.List;
import java.util.Map;

/**
 * @Author glb
 * @Date 2023/12/12 10:41
 * @Version 1.0
 */
public interface RemoteInstructSendService {

    /**
     * 查询设备属性
     * @param deviceId 设备id
     * @return 获取属性数据操作结果
     */
    Map<String, DeviceProperty> getRealData(String deviceId);

    /**
     * 发送报文到设备
     * @param deviceId 设备id
     * @param functionId 属性id
     * @param props 调用参数
     * @return 获取发送结果
     */
    Disposable sendMessage(String deviceId, String functionId, Map<String, Object> props);


    /**
     * 充电桩启动充电
     * @param deviceId 设备id
     * @param gunNum 枪id
     * @param money 充电金额
     * @param deviceType 设备型号
     * @return 获取发送结果
     */
    Map<String,Object> startCharge(String deviceId,String gunNum,int money,String deviceType);

    /**
     * 充电桩结束充电
     * @param deviceId 设备id
     * @param gunNum 枪id
     * @param deviceType 设备型号
     * @return 获取发送结果
     */
    Map<String,Object> endCharge(String deviceId,String gunNum,String deviceType);


    /**
     * 充电桩实时数据查询
     * @param deviceId 设备id
     * @param gunNum 枪id
     * @param deviceType 设备型号
     * @return 获取发送结果
     */
    Map<String,Object> getRealData(String deviceId,String gunNum,String deviceType);


    /**
     * 充电桩二维码下发
     * @param deviceId 设备id
     * @param gunNum 枪id(后两位)
     * @param QRCode 二维码内容
     * @param deviceType 设备型号
     * @return 获取发送结果
     */
    Map<String,Object> distributeQRCode(String deviceId,String gunNum,String QRCode,String deviceType);


    /**
     * 充电桩价格下发
     * @param deviceIds 设备id集合
     * @param priceTypeId 模版ID
     * @param deviceType 设备型号
     * @return 获取发送结果
     */
    Map<String,Object> distributeBillingTemplate(List<String> deviceIds,Long priceTypeId,String deviceType) ;

    /**
     * 充电桩价格请求回复
     * @param deviceIds 设备id集合
     * @param priceTypeId 模版ID
     * @param deviceType 设备型号
     * @return 获取发送结果
     */
    Map<String,Object> distributeBillingTemplates(List<String> deviceIds,Long priceTypeId,String deviceType) ;


    /**
     * 充电桩交易记录确认
     * @param deviceId 设备id
     * @param transactionNum 交易流水号
     * @param confirm 确认结果(00 上传成功 01 非法账单)
     * @param deviceType 设备型号
     * @return 获取发送结果
     */
    Map<String,Object> transactionRecordConfirmation(String deviceId,String transactionNum,String confirm,String deviceType) ;








}
